package com.zhang.mapper;

import com.github.pagehelper.PageInfo;
import com.zhang.pojo.OrderBean;
import com.zhang.pojo.SaleBean;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

/**
 * 订单mapper接口
 */
public interface IOrderMapper {
    /**
     * 根据状态，起始时间，结束时间动态查询并分页
     * @param status 订单状态
     * @param start 起始时间
     * @param end 结束时间
     * @return 分页对象
     */
    List<OrderBean> findByItem(
                               @Param("status")String status,
                               @Param("start")LocalDate start,
                               @Param("end")LocalDate end);

    /**
     * 根据用户id查询订单
     * @param userId 用户id
     * @return 订单集合
     */
    List<OrderBean> findByUserId( @Param("userId") Integer userId);

    /**
     * 通过订单id查询订单，同时查询到订单明细，在订单明细中查询，需要查询商品信息
     * @param orderId 订单id
     * @return 订单对象
     */
    OrderBean findById(int orderId);

    /**
     * 结账、
     * 先完成订单的添加，并且记录该订单的Id
     * 根据订单中的用户id，查询购物车中购物的集合
     * 将购物集合中的信息进行遍历，然后添加到订单明细表中
     * 删除该用户的购物集合
     * 根据状态排序
     * @param orderBean 订单对象
     */
    int  add(@Param("orderBean") OrderBean orderBean,@Param("userId") int userId);

    /**
     * 根据订单id，修改订单状态
     * @param id 订单id
     * @param status 新状态
     */
    void update(@Param("id") int id,@Param("status") String status);

    /**
     * 查询所有发货中的订单
     * @return 订单集合
     */
    List<OrderBean> findDeBoy();


    /**
     * 查询每个月的销售额
     * @param year 年份
     * @return 销售集合
     */
    List<SaleBean> findAll(int year);


}
